#!/bin/bash

# 该函数用于在CentOS系统中将用户添加到sudoers列表中
# 参数: 用户名列表
add_sudo_users_in_centos() {
  while [[ -n $1 ]]; do
    # 将用户添加到wheel组
    gpasswd -a $1 wheel

    # 移动到下一个参数
    shift
  done

  # 启用wheel组的sudo权限
  # 将所有以%wheel开头的行注释掉
  sed -i 's/^\s*%wheel/# &/g' /etc/sudoers
  # 取消注释包含%wheel ALL=(ALL) ALL的行
  sed -i 's/^#\s*\(%wheel\s*ALL=(ALL)\s*ALL\)/\1/' /etc/sudoers
}

# 该函数用于在Debian系统中将用户添加到sudoers列表中
# 参数: 用户名列表
add_sudo_users_in_debian() {
  # 循环处理每个用户名
  while [[ -n $1 ]]; do
    # 将用户添加到sudo组
    gpasswd -a $1 sudo
    # 移动到下一个参数
    shift
  done

  # 启用sudo组的sudo权限
  # 将所有以%sudo开头的行注释掉
  sed -i 's/^\s*%sudo/# &/g' /etc/sudoers
}

# 该函数用于根据操作系统类型将用户添加到sudoers列表中
# 参数: 用户名列表
add_sudo_users() {
  # 使用lsb_release命令获取操作系统的发行版名称
  case "$(lsb_release -is)" in
    # 如果是CentOS系统
    CentOS)
      # 调用add_sudo_users_in_centos函数，将用户添加到CentOS的sudoers列表中
      add_sudo_users_in_centos $1
      ;;
    # 如果是Ubuntu或Debian系统
    Ubuntu|Debian)
      # 调用add_sudo_users_in_debian函数，将用户添加到Debian的sudoers列表中
      add_sudo_users_in_debian $1
      ;;
  esac
}
# 导出add_sudo_users函数，使其在其他脚本中可用
export add_sudo_users

# 检查脚本是否被直接执行
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
  # 检查当前用户是否为root用户
  if [[ $EUID -ne 0 ]]; then
    # 如果不是root用户，输出提示信息并退出
    echo "Please run as root" && exit
  fi
  # 调用add_sudo_users函数，传递所有脚本参数
  add_sudo_users "$@"
fi
